web3.js@0.2x.x Contract Methods
contractInstance.myMethod(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback])
contractInstance.myMethod.call(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback])
contractInstance.myMethod.sendTransaction(param1 [, param2, ...] [, transactionObject] [, callback])
コントラクトオブジェクトはコントラクトのメソッドへのアクセスを提供します。
コントラクトのメソッドは、パラメータおよびトランザクションオブジェクトを使用して、呼び出すことができます。
パラメータ
String|Number|BigNumber
オプショナル
コントラクトメソッドに渡す 0 個以上のパラメータ(引数)
文字列として引数を渡す場合は、hex フォーマットを使用する必要があります。
BigNumber オブジェクトであれば、そのまま渡すことができます。
Object
オプショナル
トランザクションオブジェクト
data と to プロパティは無視されます。
Number|String
オプショナル
ブロック番号
Function
オプショナル
コールバック関数を渡した場合は、HTTP リクエストが非同期に実行されます。
戻り値
String
メソッドの呼び出しの場合は結果のデータ
トランザクションの送信の場合は作成されたコントラクトのアドレスまたはトランザクションハッシュ
使用方法
code:ContractMethods.js
// Automatically determines the use of call or sendTransaction based on the method type
myContractInstance.myMethod(param1 param2, ... transactionObject defaultBlock callback);
// Explicitly calling this method
myContractInstance.myMethod.call(param1 param2, ... transactionObject defaultBlock callback);
// Explicitly sending a transaction to this method
myContractInstance.myMethod.sendTransaction(param1 param2, ... transactionObject callback);
// Get the call data, so you can call the contract through some other means
// var myCallData = myContractInstance.myMethod.request(param1 param2, ...);
var myCallData = myContractInstance.myMethod.getData(param1 param2, ...);
// myCallData = '0x45ff3ff6000000000004545345345345..'
サンプルコード
code:example.js
// creation of contract object
var MyContract = web3.eth.contract(abi);
// initiate contract for an address
var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9');
var result = myContractInstance.myConstantMethod('myParam');
console.log(result) // '0x25434534534'
myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000}, function(err, result){ ... });
もう少しわかりやすく説明したい
myMethod, myMethod.call, myMethod.sendTransaction それぞれ分けて説明したい
読み出すときはgasいらないこととか
書き込むときはgasが必要なこととか
参考